"""
@Project ：interface_platform 
@File    ：replace_params.py
@IDE     ：PyCharm 
@Author  ：ZSR
@Date    ：2023/4/6 22:18 
"""

import json
import re

from backend.app import app

import json
import re

from backend.app import app


def replace_params(request_data, env_data_dict):
    pattern_params = '\{\{([a-zA-Z0-9_]+?)\}\}'  # 提取用例中的变量的正则表达式
    patter_split = '{{[a-zA-Z0-9_]+?}}'  # 切分字符串的正则表达式

    target_data = None
    if request_data is None:
        # 不需要处理
        return request_data
    target_data = str(request_data)

    params_list = re.findall(pattern_params, target_data)
    app.logger.info(f"读取请求数据当中的变量：{params_list}")
    if len(params_list) < 1:
        app.logger.info(f"没有需要替换的变量")
        return str(request_data)

    value_list = []
    for params in params_list:
        value = env_data_dict.get(params)
        if value is None:
            value_list.append("{" + params + "}")
        value_list.append(value)  # 把从环境变量中加载出来的值，添加到值列表当中
    app.logger.info(f"读取出来的对应变量的值列表为：{value_list}")

    shark_data_list = re.split(patter_split, target_data)
    app.logger.info(f"准备拼接字符串之前按照变量切分请求数据：{shark_data_list}")
    # 拼接字符串
    combiestr = ""
    for i in range(len(shark_data_list)):
        if i == 0:
            combiestr = shark_data_list[0]
        if i > 0:
            combiestr += value_list[i - 1]
            combiestr += shark_data_list[i]

    app.logger.info(f"拼接之后的结果为：{combiestr}")
    # 如果请求数据是字典，那么转化为字典
    if isinstance(request_data, dict):
        request_data = json.loads(combiestr.replace('\'', '\"'))

    # 如果请求数据是列表，那么转化为列表
    if isinstance(request_data, list):
        combiestr.split(",")
        request_data = combiestr
    # 如果是字符串，也把结果复制给request
    if isinstance(request_data, str):
        request_data = combiestr
    # 返回结果
    return request_data


if __name__ == '__main__':
    env_data_dict = {"phone2": "13800000002", "password2": "123456"}
    body = {"phone": "{{phone2}}", "password": "{{password2}}"}
    result = replace_params(body, env_data_dict)
    print(result)
